Computer vision researchers, artificial intelligence (AI) algorithm developers, hardware designers, and other consumers of three dimensional (3D) experiences often need to articulate objects within 3D environments, such as virtual worlds and mixed reality (MR) scenes. For example, computer vision researchers may need to place calibration targets on the walls of 3D buildings, or a game designer may need to place objects within the game's virtual world. Researchers developing autonomous vehicle sensors and algorithms, who are using a synthetics service for experiment generation, may need to place obstacles or create other tests for the systems being developed.
Unfortunately, placement in synthetic environments (such as virtual worlds, MR scenes, and other 3D environments containing synthetic data) typically requires specifying locations in coordinates, and the placement of an object must not interfere with other elements of the environment, such as a table should not be placed in a room such that it is partially passing through a wall. Ensuring proper placement of objects is thus often a time-consuming manual effort, with challenges for both scaling and level of difficulty. A human selecting locations by hand and verifying that the selected locations are compatible with the object placements, does not scale well when perhaps millions of objects (or viewing locations) must be placed and oriented. Writing programming code to place objects or specify viewing requires specialized skills.